package com.petsdar.service;

import com.petsdar.dao.PositionMapper;
import com.petsdar.pojo.Position;
import com.petsdar.utils.Constant;
import com.petsdar.utils.IDUtil;
import com.petsdar.utils.JsonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

/**
 * Created with IntelliJ IDEA
 * User: heroC
 * Date: 2020/7/5
 * Time: 10:28
 * Description: position相关的逻辑处理接口的实现
 * 获取部门或职位信息业务逻辑处理；
 * 更新部门或职位信息业务逻辑处理；
 * 删除部门或职位信息业务逻辑处理
 * Version: V1.0
 */

@Service
public class PositionServiceImpl implements PositionService {

    /** position持久化操作的实例对象 */
    private PositionMapper positionMapper;

    @Autowired
    public void setPositionMapper(PositionMapper positionMapper) {
        this.positionMapper = positionMapper;
    }

    /**
     * 获取所有部门或职位信息
     * @param sqlLike 用于确定查询部门还是职位
     * @return
     */
    @Override
    public List<Position> getPosition(String sqlLike) {
        List<Position> position = positionMapper.getPosition(sqlLike);
        return position;
    }

    /**
     * 添加新的部门或职位信息，生成对应的ID，生成数据更新时间。
     * 完善position对象后对其持久化操作
     * @param positionJson 部门或职位Json数据
     * @param idPrefix id的前缀，用户指定ID为部门信息还是职位信息
     * @return
     */
    @Override
    public boolean addPosition(String positionJson, String idPrefix) {
        Position position = JsonUtil.toObject(positionJson, Position.class, PositionServiceImpl.class);
        position.setPositionUpdateTime(new Date());
        position.setPositionId(IDUtil.getId(idPrefix));
        int count = positionMapper.addPosition(position);
        if (count == 1){
            return true;
        }
        return false;
    }

    /**
     * 更新部门或职位信息，设置数据更新时间后。对其持久化处理。
     * @param positionJson 部门或职位Json数据
     * @return
     */
    @Override
    public boolean updatePosition(String positionJson) {
        Position position = JsonUtil.toObject(positionJson, Position.class, PositionServiceImpl.class);
        position.setPositionUpdateTime(new Date());
        int count = positionMapper.updatePosition(position);
        if (count == 1){
            return true;
        }
        return false;
    }

    /**
     * 通过部门或职位的id对其删除操作
     * @param positionId 部门或职位的id
     * @return
     */
    @Override
    public boolean delPosition(String positionId) {
        if (positionId != null || !positionId.equals("")){
            int count = positionMapper.delPosition(positionId);
            if (count == 1){
                return true;
            }
        }
        return false;
    }
}
